// 问题描述：异步执行完 n 个任务后再执行某个任务

var todolist = []

// 设置任务时间
function getRandomTimeOut(){
    return Math.random()*5000       // 取0-5000间的随机整数
}

function test(n){
    for (let i=0; i<n; i++) {
        var p = new Promise((resolve)=>{
            setTimeout(() => {
                resolve()
            }, getRandomTimeOut()); 
        })
        todolist.push(p)
    }

    // n个任务都异步执行完后，再输出
    Promise.all(todolist).then(() => {
        console.log(`${n}个任务执行完毕`)
    }).catch(err => {
        console.log(err)
    })
}

test(10)